# 作者：lian
my_list = "This is a test string from Andrew".split()
print(my_list)

def change_lower(str_name:str):
    return str_name.lower()

print(sorted(my_list,key=change_lower))

print('-'*50)

student_tuple = [
    ('john','A',10),
    ('jane','B',12),
    ('dave','B',10),
]
#lambda表达式，就是匿名函数，匿名函数的好处：提高编写效类，提高阅读速度
print(sorted(student_tuple,key=lambda x:x[2]))

class Student:
    def __init__(self,name,grade,age):
        self.name = name
        self.grade = grade
        self.age = age

    def __repr__(self):
        """


        """
        return repr((self.name,self.grade,self.age))


student=Student('john','A',15)
student_objects = [
    Student('john','A','15'),
    Student('jane','B','12'),
    Student('dave','B','10'),
    ]
print('-'*50)
print(sorted(student_objects,key=lambda student:student.age))

from operator import itemgetter,attrgetter
print('使用operator系列')
print(sorted(student_tuple,key=itemgetter(0)))
print(sorted(student_objects,key=attrgetter('age')))
print('使用operator系列,多列排序')
print(sorted(student_tuple,key=itemgetter(1,2)))
print(sorted(student_tuple,key=lambda x:(x[1],-x[2])))
print(sorted(student_objects,key=attrgetter('grade','age'),reverse=True))

mydict = {'Li': ['M', 7],
        'Zhang': ['E', 2],
        'Wang': ['P', 3],
        'Du': ['C', 2],
        'Ma': ['C', 9],
        'Zhe': ['H', 7]}

print(sorted(mydict.items(),key=lambda x:x[1][1]))

gameresult = [
    {"name": "Bob", "wins": 10, "losses": 3, "rating": 75.00},
    {"name": "David", "wins": 3, "losses": 5, "rating": 57.00},
    {"name": "Carol", "wins": 4, "losses": 5, "rating": 57.00},
    {"name": "Patty", "wins": 9, "losses": 3, "rating": 71.48}]
from operator import itemgetter
print(sorted(gameresult, key=itemgetter("rating", "name")))





